import matplotlib.pyplot as plt
import random
# import mplcursors  # 新增导入
from pylab import mpl


mpl.rcParams['font.sans-serif'] = ['SimHei']  # 设置字体为黑体
mpl.rcParams['axes.unicode_minus'] = False  # 正常显示负号

# 数据准备
x = range(24)
# random.uniform()：随机生成13-20范围内的浮点数
y = [random.uniform(13,20) for i in x]  # 生成24个随机数作为温度数据

print('数据准备x=>',x)
print('数据准备y=>',y)

plt.figure(figsize=(10, 5), dpi=80)  # 创建画布
plt.plot(x, y, color='y', linestyle='-',label='温度')  # 绘制折线图


x_ticks_label = ["{}:00".format(i) for i in x]  # 构建x轴刻度标签
y_ticks = range(40)  # 构建y轴刻度
print('x_ticks_label=>', x_ticks_label)
print('y_ticks=>', y_ticks)

# 修改x,y轴坐标的刻度显示
plt.xticks(x[::2], x_ticks_label[::2])
# plt.xticks(x[::2])
plt.yticks(y_ticks[10:20:1])

plt.grid(True, linestyle='-', alpha=0.9)  # 添加网格
plt.legend(loc=0)  # 显示图例

# 描述信息
plt.xlabel("时间")
plt.ylabel("温度")
plt.title("24小时内温度变化图", fontsize=18)


# # 启用悬停提示（新增部分）
# cursor = mplcursors.cursor(hover=True)

# @cursor.connect("add")
# def on_add(sel):
#     x_val = sel.target[0]  # 获取x值
#     y_val = sel.target[1]  # 获取y值
#     sel.annotation.set_text(f"时间: {x_val:.0f}:00\n温度: {y_val:.1f}°C")  # 格式化显示

plt.savefig("./第5章matplotlib可视化展示数据/折线图.jpg")  # 保存至指定位置
plt.show()  # 显示图像